﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data.SqlClient;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace FrbaBus.UserInterface.ABM.Rol
{
    using FrbaBus.DataRepository;

    public partial class AltaRol : Form
    {
        ValidacionesGenericas validacionesGenericas;
        RolRepository rolRepository;

        public AltaRol ()
        {
            InitializeComponent ();
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;

            permisosCheckedListBox.CheckOnClick = true;
            
            crearButton.Enabled = false;

            validacionesGenericas = new ValidacionesGenericas ();
            rolRepository = new RolRepository ();

            cargarFuncionalidades ();
        }

        /**
         * Recupera las funcionalidades y las carga en el CheckedListBox.
         */
        void cargarFuncionalidades ()
        {
            DataSet dataSet = rolRepository.obtenerDataSetParaVincularElementoVista ("sp_buscarFuncionalidades");
            permisosCheckedListBox.DataSource = dataSet.Tables [0].DefaultView;
            permisosCheckedListBox.ValueMember = "ID";
            permisosCheckedListBox.DisplayMember = "DESCRIPCION";
        }

        private void nombreTextbox_TextChanged (object sender, EventArgs e)
        {
            crearButton.Enabled = true;
           
        }

        private void btnLimpiar_Click(object sender, EventArgs e)
        {
            //Restablece los campos a completar
            nombreTextbox.Clear();
            for (int item = 0; item < permisosCheckedListBox.Items.Count; item++)
            {
                permisosCheckedListBox.SetItemChecked(item, false);
            }
        }

        private void crearButton_Click(object sender, EventArgs e)
        {
            try
            {
                //  Recupero los valores de la GUI.
                string nombreRol = nombreTextbox.Text;

                //  Valido los campos obligatorios
                validacionesGenericas.campoObligatorio(nombreRol, "El nombre del rol es obligatorio.");

                //  Guardo en la BD
                rolRepository.guardar(nombreRol);

                MessageBox.Show("Se creó el rol correctamente.");
            }
            catch (ValidacionNegocioException excepcionValidacion)
            {
                MessageBox.Show(excepcionValidacion.MensajeAlusuario);
            }
        }

        private void AltaRol_Load(object sender, EventArgs e)
        {

        }

        private void atrasButton_Click(object sender, EventArgs e)
        {
            new MenuPrincipal().Show();
            this.Close();
        }

    }
}
